Vector を Amazon Linux 2 で使ってみた
こんにちは、望月です。
Vector が僕の周りで流行っているので試しにインストールをしてみました。
Vector - A lightweight and ultra-fast tool for building observability pipelines | Vector
Vector とはログ収集ツールとなり、同じようなツールとして Fluentd が有名かと思います。最近開発された Rust で作られているツールでシンプルで軽く、これからが楽しみなツールです。
今回は Apache のアクセスログを CloudWatch Logs とS3 への出力をやってみました。
やってみた
導入環境
- EC2 インスタンス (Amazon Linux 2)
- Instance type:
t3.micro
- AMI ID:
amzn2-ami-hvm-2.0.20210617.0-x86_64-gp2
- IAM Role:
AmazonS3FullAccess
,CloudWatchLogsFullAccess
- 検証のため FullAccess を与えています。実際に運用する場合は必要最低限の権限のみ設定するようにしてください。
- Instance type:
- Vector
0.14.0
準備
まずは Apache をと言いたいところですが欲しいのはアクセスログなので apache-loggen
をインストールして、ダミーのアクセスログを作成できるようにします。
apache-loggen
コマンドでダミーのアクセスログが出力できるようになったら OK です。
sudo yum install ruby rubygems gem install apache-loggen apache-loggen --limit=100
インストール
Vector では様々なインストール方法があり、YUM を利用したインストールのほかに RPM パッケージやインストーラーでのインストールが用意されています。
詳しくは以下ドキュメントをご確認いただくとして、ここでは YUM のインストールを試してみます。
Install Vector | Docs | Vector
$ curl -1sLf \ > 'https://repositories.timber.io/public/vector/cfg/setup/bash.rpm.sh' \ > | sudo -E bash
上記実行することで /etc/yum.repos.d/
に Vector リポジトリのファイル timber-vector.repo
がインストールされます。
あとは YUM コマンドを実行することで Vector をインストールすることができます。
$ sudo yum install vector $ rpm -qi vector Name : vector Version : 0.14.0 Release : 1 Architecture: x86_64 Install Date: Wed 07 Jul 2021 07:30:15 AM UTC Group : Applications/System Size : 70369826 License : ASL 2.0 Signature : RSA/SHA256, Thu 03 Jun 2021 06:18:56 PM UTC, Key ID 3543db2d0a2bc4b8 Source RPM : vector-0.14.0-1.src.rpm Build Date : Thu 03 Jun 2021 06:13:16 PM UTC Build Host : 9a84edd357ab Relocations : (not relocatable) URL : https://vector.dev Summary : A lightweight and ultra-fast tool for building observability pipelines Description : A lightweight and ultra-fast tool for building observability pipelines
インストール後は /etc/vector/vector.toml
にてコンフィグを管理し systemctl
コマンドにてプロセスの起動等を操作することができます。
sudo systemctl restart vector
コンフィグ
Vector では複数のコンフィグ書式に対応しており、TOML, YAML, JSON に対応しています。
今回は TOML にてコンフィグを作成していきます。
sudo tee /etc/vector/vector.toml <<'_VECTORCFG_' [sources.apache_log] type = "file" # required include = ["/tmp/apache.log"] # required [sinks.apache_log-cwlogs] # General type = "aws_cloudwatch_logs" # required inputs = ["apache_log"] # required group_name = "/ec2/apache-logs" # required region = "ap-northeast-1" # required, required when endpoint = null stream_name = "{{ host }}" # required # Encoding encoding.codec = "text" # required [sinks.apache_log-s3] # General type = "aws_s3" # required inputs = ["apache_log"] # required bucket = "<ログを出力する S3 バケット名を入れてください>" # required compression = "gzip" # optional, default region = "ap-northeast-1" # required, required when endpoint = null # Encoding encoding.codec = "text" # required # File Naming key_prefix = "apache_logs/year=%Y/month=%m/day=%d/" # optional, default _VECTORCFG_
コンフィグ作成後に systemctl
コマンドにて Vector を再起動します。
あとは apache-loggen
コマンドで対象のパスにログを出力することで、ログが CloudWatch Logs と S3 に出力されます。ここでは 60 秒ごとにローテーションさせるようにし、ローテーションしたログを取り込めるかも確認しています。
apache-loggen --rate=10 --rotate=60 /tmp/apache.log
S3, CloudWatch Logs を確認し、ログが出力されていることを確認します。
まとめ
思った以上に簡単に S3 と CloudWatch Logs にログ出力をすることができました。
いままでは選択肢として Fluentd を選択することも多かったですが、これからは Vector も検討していくのは全然アリだなと思いました。